查看原文
其他

Unite 2016|Unity实时渲染动画电影《Gift》

Unity官方 Unity官方平台 2018-11-15
相信大家对Unite 2016 Shanghai的Keynote上,由Marza展示的动画短片《Gift》都印象深刻。这部使用Unity实时渲染的高品质短片可以说是奠定了使用Unity制作动画电影的基础。今天就为大家简单介绍《Gift》的制作流程以及Unity在其中扮演的角色。


先来看看这部使用Unity实时渲染的动画电影《Gift》:


https://v.qq.com/txp/iframe/player.html?vid=r0194bf9yd0&width=500&height=375&auto=0


前期调研

传统的动画制作都采用预渲染的方式,这样可以保证最佳的渲染品质,但缺点是耗时过长,制作成本过高。Marza想要解决的问题就是在保证整个画面质量的同时还能极大缩短制作周期。而Unity引擎因其简单的开发环境、超强的图形渲染能力以及自由度超高的可扩展性,成为了Marza的首选工具。



Marza先将其原有的影视制作流程整合进Unity,然后定制一些自动化的工具,再开发一些着色器来完善画面的后期效果,整个完全不输CG动画的高品质短片《Gift》就通过Unity实时渲染出来了。下面为大家分别介绍各个流程。


工作流与数据流
《Gift》使用Maya作为建模及动画布局工具,将模型及动画文件以Alembic格式导入Unity,然后使用Unity代替了Arnold或V-Ray渲染器来完成渲染流程,最后将Unity输出的文件导入Nuke进行动画整合,从而高效完成了整个动画短片的制作过程。其中Unity作为主要的数据流处理工具,而导入数据到Unity,经过Unity处理后再导出的过程,就是通过Unity与Marza合作完成的插件Marza Movie Pipeline for Unity来实现的。

自动化工具与数据处理
制作《Gift》的过程中,Marza与Unity合作开发了一些自动化的工具,以保证实时渲染能达到与预渲染同样的品质并简化工作流程。这也是使用Unity实时渲染替代传统动画引擎的优势所在。下面分别为大家介绍这些工具以及数据处理的流程。

1
Alembic Importer
Alembic是一种专门针对复杂的3D几何体开发的文件格式,适用于多种3D建模软件及渲染器如Maya、3ds Max、Nuke、Houdini、Arnold、V-Ray、Renderman等等。而Unity与Marza合作的Alembic Importer就是用来将Maya导出的Alembic文件导入Unity中进行解析,并保证在Unity中的模型质量与在Maya中完全一致:



2
将Alembic Mesh导入Unity

将Alembic格式的网格直接导入Unity并赋给材质的Mesh属性,这样就能直接在Unity中看到带有材质的模型。 并且保证在Unity中的材质外观与Maya中几乎一致:



3
Frame Capturer
Frame Capturer用于实时抓取游戏视图并输出OpenEXR格式的文件,OpenEXR是一种高动态范围图像格式,可存储比常规的8位和10位图像格式更高的动态范围和颜色精度,支持16位浮点数、32位浮点数和32位整数的像素颜色值。

4
使用Image Pipeline合成
拿到Unity导出的OpenEXR文件后,使用Marza自有的动画制作工具Image Pipeline进行合成,这里Image Pipeline已被直接整合在Unity中,所以设计师们可以按照与原先预渲染相同的做法进行制作。

5
处理光照并自动抓图

动画电影与游戏的最大差别就在于动画电影需要不断切换镜头,而每次镜头切换都会带来相应的光照变化,所以每个镜头都被当作单独的场景来处理。由于镜头数量较多,相应需要处理的场景数量也很多。


但使用Unity引擎,可以创建一些工具来自动构建场景,并对内容及光照环境类似的场景进行自动复制,然后使用自动处理抓图流程,打开一次场景即进行一次抓取流程,如此反复。这样就极大地提高了工作效率,与传统制作过程的预渲染相比,平均能有565倍效率的提升。


着色器

Marza对Unity自带的StandardShader进行了扩展,针对毛发、眼球、皮肤、头发及草皮等实现了专门的着色器。其中针对毛发的着色器借助纹理贴图软件Mari的FlowMap来表现毛发的方向,让整个毛发看起来栩栩如生。而眼球着色器则可以根据灯光及视线方向来控制眼球的反射及折射情况。以上着色器都是在使用Unity实时渲染的过程中对画面进行调整,极大提高了画面的真实感,达到了动画电影所要求的工业标准:



彩球浪花的制作


整个场景中最激动人心的片段,就是由几百万个彩球组成的浪花了。当然,这样一段效果看似只有短短几秒,但实现起来绝非易事,甚至因为彩球数量太多导致Unity编辑器的状态显示出了Bug,三角形数量超出了int的最大范围被显示为负数。




此场景中三角形数量最多可达32亿,还好Unity引擎表现得出人意料,即便在状态显示出错的情况下还是非常高效地完成了渲染任务。


最后

关于《Gift》的简单制作流程就为大家分享到这里,《Gift》的诞生很好的证明了Unity在图形渲染上的惊人能力,同时也凝聚了Marza希望与Unity一起改变整个动画电影制作流程的决心。另外Marza还表示,希望与Unity合作,将这样的实时渲染技术直接带入VR!


相信《Gift》的出现不仅为动画影视制作人员带来了全新的技术革新及流程改进,同时也为Unity开发者们打开了全新的大门,使用Unity不仅可以制作行业应用软件、游戏、VR内容,现在还可以直接渲染动画电影了!


延展阅读

Unity 5.x编辑器新功能Frame Debugger

详解Unity Profiler内存分析问题

Unite 2016|《Adam》图形技术介绍

Unity官方认证项目介绍

Unity大中华区授权代理商介绍


我们后面还会为大家分享更多的技术内容,请关注Unity官方中文社区(forum.china.unity3d.com)。


点击“阅读原文”进入官方社区,有彩蛋哦!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存